home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / pgmr / prog7b.arc / PROG7OVL.ASM < prev    next >
Encoding:
Assembly Source File  |  1990-01-26  |  15.1 KB  |  384 lines

  1.         PAGE    63,132
  2.         TITLE    Program MC68HC705C8
  3.         SUBTTL    By Gil Shultz
  4.  
  5. COMMENT    |
  6.  
  7. This is included so you can customize PROG7.COM to process about any  of  the 
  8. motorola  HC05  microprocessors that will support the serial boot SCI mode. A 
  9. word of caution, PROG7 DOES NOT check the validity of the data  in  the  over 
  10. lay, and will use whatever you enter. This could lead to crashing your system 
  11. or worse. Prog7 has a max capacity of 12K of memory for  the  chips.   Making 
  12. this overlay tell it that there is more will wipe out it's internal stack and 
  13. cause it to go into never never land.  Currently  PROG7  uses  memory  up  to 
  14. SEGMENT:0E800  for  itself  and  buffers.   The stack starts at SEGMENT:FFFF, 
  15. therefore you need 64K of ram free to be able to run this program.
  16.  
  17. |
  18.         ;********************************
  19.         ;*                *
  20.         ;*    Enable cref and list    *
  21.         ;*                *
  22.         ;*    Define system equates    *
  23.         ;*                *
  24.         ;********************************
  25.  
  26. ;    .CREF            ; Enable cross referencing
  27.     .XCREF            ; Disable cross referencing
  28.     .LIST            ; Enable list file
  29. ;    .XLIST            ; Disable list file
  30.  
  31.     ;********************************************************
  32.     ;*                            *
  33.     ;*                            *
  34.     ;*    Use the Microsoft macro assembler 5.1        *
  35.     ;*                            *
  36.     ;*  To Create:   MASM PROG7OVL                 *
  37.     ;*               LINK PROG7OVL                *
  38.     ;*               EXE2BIN PROG7OVL PROG7OVL.COM        *
  39.     ;*         Rename PROG&OVL.COM to PROG7.OVL    *
  40.     ;*                            *
  41.     ;*    Program '7' allows programing MC68HC705C8    *
  42.     ;*                            *
  43.     ;*                            *
  44.     ;********************************************************
  45.  
  46. CSEG    SEGMENT    PARA PUBLIC 'CODE'    ; Start CODE segment
  47.     ASSUME    CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG
  48. PAGE
  49.     ;************************************************
  50.     ;*                        *
  51.     ;*        Character equates        *
  52.     ;*                        *
  53.     ;************************************************
  54.  
  55. CR    EQU    0DH        ; carriage return character
  56. LF    EQU    0AH        ; line feed character
  57.  
  58. BAUD150        EQU    300H    ; 768 Clock division ratio
  59. BAUD300        EQU    180H    ; 384 Clock division ratio
  60. BAUD600        EQU    0C0H    ; 192 Clock division ratio
  61. BAUD1200    EQU    60H    ;  96 Clock division ratio
  62. BAUD2400    EQU    30H    ;  48 Clock division ratio
  63. BAUD4800    EQU    18H    ;  24 Clock division ratio
  64. BAUD9600    EQU    0CH    ;  12 Clock division ratio
  65. BAUD19200    EQU    6H    ;   6 Clock division ratio
  66. BAUD38K        EQU    3H    ;   3 Clock division ratio
  67. BAUD56K        EQU    2H    ;   2 Clock division ratio
  68. BAUD115K    EQU    1    ;   1 Clock division ratio
  69. PAGE
  70.     ;****************************************************************
  71.     ;*                                *
  72.     ;*    This is a little tricky but the assembler is forced to    *
  73.     ;*    process this in the first pass only, and increments it    *
  74.     ;*    after each  programing  module is  processed with this    *
  75.     ;*    statement:  (RCOUNT=RCOUNT+1).   This then  forces  the    *
  76.     ;*    assembler to  count modules for us,  that way we won't    *
  77.     ;*    forget to update the count.  Prog7 uses this number to    *
  78.     ;*    determine if the chip selected (S command) is valid.    *
  79.     ;*                                *
  80.     ;****************************************************************
  81.  
  82.     IF1
  83. RCOUNT    =    0        ; set counter
  84.     ENDIF
  85.  
  86.     ;****************************************************************
  87.     ;*                                *
  88.     ;*    Use a little care here, when a .COM  file is generated    *
  89.     ;*    for the PC, it is assumed that the PSP  will reside in    *
  90.     ;*    the first  256  bytes of code,   and the  program will    *
  91.     ;*    actually start after that.  Therefore in a .COM  file,    *
  92.     ;*    the data  byte at location  100  will actually be  the    *
  93.     ;*    first byte in the file.  We are then putting 256 dummy    *
  94.     ;*    bytes  (zero,  but doesn't matter what the data is) at    *
  95.     ;*    the beginning of the overlay file. The reason for this    *
  96.     ;*    is to  allow you to assemble a  variation of this file    *
  97.     ;*    the AS05 ASSEMBLER,  and then  load it with PROG7, and    *
  98.     ;*    then, by doing a  BINARY  save you can create your own    *
  99.     ;*    customized overlay file.                *
  100.     ;*                                *
  101.     ;****************************************************************
  102.  
  103.         ORG    100H        ; Set so conversion to com will work
  104. MAIN    PROC    NEAR            ; Define procedure, needed for MASM
  105.     DB    256 DUP (0)        ; fill first block so that the
  106.                     ; data starts 100H bytes into the file
  107.     DW    (ENDMSG-OVERLY)        ; Tell overlay loader how long message
  108.                     ; section of overlay is any length is ok.
  109.     DW    RCOUNT            ; This has the number of overlays in
  110.                     ; this module. Caution this is calculated
  111.                     ; by the assembler
  112. PAGE
  113.     ;****************************************************************
  114.     ;*                                *
  115.     ;*    If you want  this to work with  MASM  no  monkey  with    *
  116.     ;*    the ORG, DB statements above. the DW statement is used    *
  117.     ;*    by the overlay  loader to determine how long the first    *
  118.     ;*    record is.   all additional records must be  512 bytes    *
  119.     ;*    in  length  if  the overlay is to work.   Make them of    *
  120.     ;*    another length if you like but don't ask me for help.    *
  121.     ;*                                *
  122.     ;*                                *
  123.     ;*    This is the menu that will be  displayed when the chip    *
  124.     ;*    command is issued.  Doesn't matter what is in it,  but    *
  125.     ;*    prog7.COM  will assume that after displaying the whole    *
  126.     ;*    message and that additional records are  512  bytes in    *
  127.     ;*    length. The location of data in these records is fixed    *
  128.     ;*    and cannot be  changed.   This is designed  so you can    *
  129.     ;*    also generate  your own custom overlay at will and use    *
  130.     ;*    the  ASM05  assembler or MASM to generate the overlay.    *
  131.     ;*    It is also designed that if you use ASM05, you can use    *
  132.     ;*    PROG7.COM  to convert it from "S1" records to a binary    *
  133.     ;*    overlay with the load and save "B" command. When doing    *
  134.     ;*    this be sure the program is set up for a  "C8",  to be    *
  135.     ;*    sure that you have enough rom area to load the overlay    *
  136.     ;*    into.   You have 2 control characters that you can put    *
  137.     ;*    into the message, they are a ^P CTRL-P for pause and a    *
  138.     ;*    ^L CTRL-L to cause PROG7.COM to clear the screen.    *
  139.     ;*                                *
  140.     ;*            Enjoy   -    Gil Shultz Motorola    *
  141.     ;*                                *
  142.     ;****************************************************************
  143.  
  144. OVERLY:    DB '(1)   MC68HC705C8',CR,LF
  145. .XLIST                        ; Just to keep listing neet
  146.     DB '(2)   MC68HC805C4   - Note this is a Dummy entry',CR,LF
  147.     DB '(3)   MC68HC705B5   - Note this is a Dummy entry',CR,LF
  148.     DB '(4)   MC68HC805B6   - Note this is a Dummy entry',CR,LF,CR,LF
  149.     DB 'Overlay by Gil Shultz 12/28/89',CR,LF,CR,LF,'$'
  150.  
  151.     DB 'This is a sample of the overlay. This first block CAN BE any length',CR,LF
  152.     DB ' NOTE: the first four bytes are reserved for prog7.',CR,LF
  153.     DB 'Note the ($) dollar character terminates the display, and data',CR,LF
  154.     DB 'following that will not be displayed even though it is in',CR,LF
  155.     DB 'the over lay file. The above message is copied as it is to',CR,LF
  156.     DB 'the console device until a "$" is encountered. The rest of',CR,LF
  157.     DB 'the data following is ignored. Absolute address in this overlay',CR,LF
  158.     DB 'mean nothing to prog7, but record block sizes and data locations',CR,LF
  159.     DB 'do. You can use any assembler that is convenient to add/modify',CR,LF
  160.     DB 'this over lay. You can edit the text with a text editor and copy',CR,LF
  161.     DB 'the tables to the end of it with copy and the /B option.',CR,LF
  162.  
  163.     ALIGN    256    ; Put on even page boundary to make checking easy
  164. ENDMSG:                        ; This is used to calculate 
  165.                         ; message length for PROG7
  166. .LIST
  167. PAGE
  168. ;=======================[ Overlay Data Starts here ]========================
  169.  
  170.          ;*******************************************************
  171.          ;*                            *
  172.          ;*-----[ The following is for a MC68HC705C8 Chip ]-----*
  173.          ;*                            *
  174.          ;*******************************************************
  175.  
  176. M1_:                        ; Reference label for block
  177. M1_TABSIZ:    DB    1FH            ; Length of memory map anded 0FF00H
  178. M1_DELCNT:    DB    14            ; Delay for programing 1 SEC = 18.2
  179.                         ; This is wait time for pgmr to respond
  180. M1_NUMPAS:    DB    2            ; number of passes needed to program EPROM
  181. M1_SWIDAT:    DB    83H            ; SWI instruction
  182. M1_ROMBLK:    DB    0            ; rom blank character (when erased)
  183. M1_RAMBLK:    DB    0            ; ram blank character (doesn't much matter)
  184. M1_BLINKS:    DB    12            ; number of blink cycles for LED's
  185. M1_BAUD:    DW    BAUD4800        ; Baud to communicate with programmer
  186. M1_VECTOR:    DW    1FF4H,1FFFH        ; Vector locations in the Chip
  187. M1_ROMSIZ:    DB    ((M1_RAMSIZ-M1_ROMSIZ)-1)/4    ; number of entries in rom table
  188.         DW    20H,04FH        ; start rom locations
  189.         DW    100H,1EFFH        ; end rom locations
  190. M1_RAMSIZ:    DB    ((M1_CHPNAM-M1_RAMSIZ)-1)/4    ; Number of entries in RAM table
  191.         DW    50H,0FFH        ; First location is loader address
  192.                         ; The programing code is loaded here
  193. M1_CHPNAM:    DB    'MC68HC705C8$'        ; Name of Chip
  194.  
  195.     ORG    (M1_+256)
  196. .XLIST                        ; Not needed
  197. M1_LOADER:                    ; Include processor dependent code
  198.     INCLUDE    PROG7C8.INC            ; the processor dependent code
  199. .LIST                        ; display what we have
  200.     DB    ((M1_+512) - $)        ; Filler for now
  201.     ORG    M1_ + 512
  202.     IF1
  203. RCOUNT    =    (RCOUNT+1)
  204.     ENDIF
  205. PAGE
  206. ;=======================[ Overlay Data Starts here ]========================
  207.  
  208.     ;********************************************************
  209.     ;*                            *
  210.     ;*-----[ The following is for a MC68HC805C4 Chip ]------*
  211.     ;*                            *
  212.     ;********************************************************
  213.  
  214. M2_:
  215. M2_TABSIZ:    DB    0FH            ; Length of memory map
  216. M2_DELCNT:    DB    14            ; Delay for programing 1 SEC = 18.2
  217.                         ; This is wait time for pgmr to respond
  218. M2_NUMPAS:    DB    1            ; number of passes needed to program EPROM
  219. M2_SWIDAT:    DB    83H            ; SWI instruction
  220. M2_ROMBLK:    DB    0FFH            ; rom blank character
  221. M2_RAMBLK:    DB    0            ; ram blank character
  222. M2_BLINKS:    DB    4            ; number of blinks for LED's
  223. M2_BAUD:    DW    BAUD4800        ; Baud to communicate with programmer
  224. M2_VECTOR:    DW    1FF4H,1FFFH        ; Vector locations
  225. M2_ROMSIZ:    DB    ((M2_RAMSIZ-M2_ROMSIZ)-1)/4    ; number of entries in rom table
  226.         DW    20H,04FH        ; start rom locations
  227.         DW    100H,0EFFH        ; end rom locations
  228. M2_RAMSIZ:    DB    ((M2_CHPNAM-M2_RAMSIZ)-1)/4    ; Number of entries in RAM table
  229.         DW    50H,0FFH        ; First location is loader address
  230.  
  231. M2_CHPNAM:    DB    'MC68HC805C4 This is a Dummy$'    ; Name of Chip
  232.  
  233.     ORG    (M2_+256)
  234. .XLIST
  235. M2_LOADER:                    ; Include processor dependent code
  236.     INCLUDE    PROG7C8.INC            ; the processor dependent code
  237. .LIST
  238.     DB    ((M2_+512) - $)        ; Filler for now
  239.     ORG    M2_ + 512
  240.     IF1
  241. RCOUNT    =    (RCOUNT+1)
  242.     ENDIF
  243. PAGE
  244. ;=======================[ Overlay Data Starts here ]========================
  245.  
  246.     ;********************************************************
  247.     ;*                            *
  248.     ;*-----[ The following is for a MC68HC805XX Chip ]------*
  249.     ;*                            *
  250.     ;********************************************************
  251.  
  252. M3_:
  253. M3_TABSIZ:    DB    2FH            ; Length of memory map
  254. M3_DELCNT:    DB    10            ; Delay for programing 1 SEC = 18.2
  255.                         ; This is wait time for pgmr to respond
  256. M3_NUMPAS:    DB    1            ; number of passes needed to program EPROM
  257. M3_SWIDAT:    DB    83H            ; SWI instruction
  258. M3_ROMBLK:    DB    0            ; rom blank character
  259. M3_RAMBLK:    DB    0            ; ram blank character
  260. M3_BLINKS:    DB    9            ; number of blinks for LED's
  261. M3_BAUD:    DW    BAUD9600        ; Baud to communicate with programmer
  262. M3_VECTOR:    DW    1FF4H,1FFFH        ; Vector locations
  263. M3_ROMSIZ:    DB    ((M3_RAMSIZ-M3_ROMSIZ)-1)/4    ; number of entries in rom table
  264.         DW    20H,04FH        ; start rom locations
  265.         DW    100H,1EFFH        ; end rom locations
  266.         DW    2000H,2FFFH        ; add an additional rom block
  267. M3_RAMSIZ:    DB    ((M3_CHPNAM-M3_RAMSIZ)-1)/4    ; Number of entries in RAM table
  268.         DW    50H,0FFH        ; First location is loader address
  269.         DW    0,2FH            ; add some locations
  270.         DW    40,9FH
  271. M3_CHPNAM:    DB    'MC68HC805XX This is a Dummy$'    ; Name of Chip
  272.  
  273.     ORG    (M3_+256)
  274. .XLIST
  275. M3_LOADER:                    ; Include processor dependent code
  276.     INCLUDE    PROG7C8.INC            ; the processor dependent code
  277. .LIST
  278.     DB    ((M3_+512) - $)        ; Filler for now
  279.     ORG    M3_ + 512
  280.     IF1
  281. RCOUNT    =    (RCOUNT+1)
  282.     ENDIF
  283.  
  284. PAGE
  285. ;=======================[ Overlay Data Starts here ]========================
  286.  
  287.     ;********************************************************
  288.     ;*                            *
  289.     ;*-----[ The following is for a MC68HC805C8 Chip ]------*
  290.     ;*                            *
  291.     ;********************************************************
  292.  
  293. M4_:                        ; Reference label for block
  294. M4_TABSIZ:    DB    1FH            ; Length of memory map anded 0FF00H
  295. M4_DELCNT:    DB    14            ; Delay for programing 1 SEC = 18.2
  296.                         ; This is wait time for pgmr to respond
  297. M4_NUMPAS:    DB    1            ; number of passes needed to program EPROM
  298. M4_SWIDAT:    DB    83H            ; SWI instruction
  299. M4_ROMBLK:    DB    0FFH            ; rom blank character (when erased)
  300. M4_RAMBLK:    DB    0            ; ram blank character (doesn't much matter)
  301. M4_BLINKS:    DB    10            ; number of blink cycles for LED's
  302. M4_BAUD:    DW    BAUD9600        ; Baud to communicate with programmer
  303. M4_VECTOR:    DW    1FF0H,1FFFH        ; Vector locations in the Chip
  304. M4_ROMSIZ:    DB    ((M4_RAMSIZ-M4_ROMSIZ)-1)/4    ; number of entries in rom table
  305.         DW    20H,04FH        ; start rom locations
  306.         DW    101H,1FFH        ; end rom locations
  307.         DW    800H,1EFFH
  308. M4_RAMSIZ:    DB    ((M4_CHPNAM-M4_RAMSIZ)-1)/4    ; Number of entries in RAM table
  309.         DW    50H,0FFH        ; First location is loader address
  310.                         ; The programing code is loaded here
  311. M4_CHPNAM:    DB    'MC68HC805B6$'        ; Name of Chip
  312.  
  313.     ORG    (M4_+256)
  314. .XLIST                        ; Not needed
  315. M4_LOADER:                    ; Include processor dependent code
  316.     INCLUDE    PROG7C8.INC            ; the processor dependent code
  317. .LIST                        ; display what we have
  318.     DB    ((M4_+512) - $)        ; Filler for now
  319.     ORG    M4_ + 512
  320.     IF1
  321. RCOUNT    =    (RCOUNT+1)
  322.     ENDIF
  323.  
  324. ;=======================[ Overlay Data Starts here ]========================
  325.  
  326.     ;********************************************************
  327.     ;*                            *
  328.     ;*---------[ The following is a dummy record ]----------*
  329.     ;*                            *
  330.     ;********************************************************
  331.  
  332. ;<<<<<<<<<<<<---------------->>>>>>>>>>>>>>  Insert additional overlays here
  333.  
  334. M5_:
  335.     DB    0,1,2,3,4        ; just for test
  336.  
  337. MAIN    ENDP
  338.     CSEG    ENDS
  339.     END    MAIN
  340.  
  341. USE THIS AS A SAMPLE FOR ADDING ADDITIONAL CHIPS TO THE OVERLAY, JUST CHANGE
  342. THE M0_ TO WHATEVER YOU WANT, AND IT SHOULD WORK PERFECTLY. YOU ALSO NEED TO
  343. EDIT THE ACTUAL DATA IN THE TABLES AND CORRECT IT TO WHATEVER YOU WANT.
  344.  
  345. PAGE
  346. ;=======================[ Overlay Data Starts here ]========================
  347.  
  348.     ;********************************************************
  349.     ;*                            *
  350.     ;*-----[ The following is for a MC68HC805C8 Chip ]------*
  351.     ;*                            *
  352.     ;********************************************************
  353.  
  354. M0_:                        ; Reference label for block
  355. M0_TABSIZ:    DB    1FH            ; Length of memory map anded 0FF00H
  356. M0_DELCNT:    DB    14            ; Delay for programing 1 SEC = 18.2
  357.                         ; This is wait time for pgmr to respond
  358. M0_NUMPAS:    DB    2            ; number of passes needed to program EPROM
  359. M0_SWIDAT:    DB    83H            ; SWI instruction
  360. M0_ROMBLK:    DB    0            ; rom blank character (when erased)
  361. M0_RAMBLK:    DB    0            ; ram blank character (doesn't much matter)
  362. M0_BLINKS:    DB    12            ; number of blink cycles for LED's
  363. M0_BAUD:    DW    BAUD4800        ; Baud to communicate with programmer
  364. M0_VECTOR:    DW    1FF4H,1FFFH        ; Vector locations in the Chip
  365. M0_ROMSIZ:    DB    ((M0_RAMSIZ-M0_ROMSIZ)-1)/4    ; number of entries in rom table
  366.         DW    20H,04FH        ; start rom locations
  367.         DW    100H,1EFFH        ; end rom locations
  368. M0_RAMSIZ:    DB    ((M0_CHPNAM-M0_RAMSIZ)-1)/4    ; Number of entries in RAM table
  369.         DW    50H,0FFH        ; First location is loader address
  370.                         ; The programing code is loaded here
  371. M0_CHPNAM:    DB    'MC68HC805C8$'        ; Name of Chip
  372.  
  373.     ORG    (M0_+256)
  374. .XLIST                        ; Not needed
  375. M0_LOADER:                    ; Include processor dependent code
  376.     INCLUDE    PROG7C8.INC            ; the processor dependent code
  377. .LIST                        ; display what we have
  378.     DB    ((M0_+512) - $)        ; Filler for now
  379.     ORG    M0_ + 512
  380.     IF1
  381. RCOUNT    =    (RCOUNT+1)
  382.     ENDIF
  383.  
  384.